home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / memory.cq / memory.c
Text File  |  1984-07-31  |  1KB  |  41 lines

  1. /* memory.c
  2. */
  3.  
  4. /*    determine system & available memory sizes
  5. */
  6.  
  7. #include    <_default.c>        /* diddle to make smaller */
  8. #include    <stdio.h>          /* this is CI-C86 header file */
  9.  
  10. struct    regval {
  11.         unsigned ax,bx,cx,dx,si,di,ds,es;
  12.         };
  13.  
  14. extern    unsigned int *_PSPSEG;        /* pointer to DOS program segment prefix
  15.                        everything below this addres is verboten */
  16.  
  17. extern    long         ptrtoabs();    /* convert pointer to absolute address */
  18. extern    unsigned int sysint();        /* invokes any INT */
  19.  
  20. main()
  21. {
  22.  
  23.     struct   regval sysr;            /* register arguments for INT */
  24.     unsigned int    intstat;            /* flags returned from INT */
  25.     unsigned long   hdw_memsize,        /* total system memory, bytes */
  26.             ret_memsize;        /* total available to program */
  27.  
  28.     intstat = sysint( 0x12, &sysr, &sysr ); /* invoke BIOS INT 12h */
  29.     hdw_memsize = sysr.ax * 1024L;        /* total system memory */
  30.  
  31.     ret_memsize = hdw_memsize - ptrtoabs(_PSPSEG);/* total available memory */
  32.  
  33.     printf( "%12lu bytes - system\n", hdw_memsize );
  34.     printf( "%12lu bytes - available\n", ret_memsize );
  35.  
  36.     exit( 0 );                /* exit to whomever, successfully */
  37.  
  38.     }    /* end main() */
  39.  
  40.                     /* end memory.c */
  41.